#ifndef H_MESSAGE_H
#define H_MESSAGE_H

#define MAX_DATA_SIZE 29
#define MAX_MESSAGE_SIZE 33
#define STAMP 126

#include <cstring>
#include <cstdlib>
#include <iostream>
#include <list>


using namespace std;
using std::string;

typedef unsigned char byte;

class message
{
    public:
        message(byte *msg = NULL);
        byte getStamp();
        size_t getSize();
        size_t getSeq();
        byte getType();
        const byte *getData();
        byte getParit();
        const byte *getMessage();
        byte messageStamp(const byte *msg);
        size_t messageSize(const byte *msg);
        size_t messageSeq(const byte *msg);
        byte messageType(const byte *msg);
        const byte *messageData(const byte *msg);
        byte messageParit(const byte *msg);
        bool validateMessage();
        bool setMessage(byte seq, byte type, const byte *data, size_t dataSize);
    private:
        void generateParit();
        bool copyMessage(const byte *from, byte *to);
        byte messageString[MAX_MESSAGE_SIZE];
};

#endif
